উদাহরণসহ DeepSpeed এর বেসিক ফিচার ব্যবহার

DeepSpeed এর মূল উপাদানসমূহ - ডিপ স্পিড (DeepSpeed) - Latest Technologies

296

DeepSpeed হলো Microsoft এর একটি ওপেন-সোর্স লাইব্রেরি, যা large-scale মডেল training দ্রুত, দক্ষ এবং memory-efficient করে তুলতে সাহায্য করে। DeepSpeed এর কিছু প্রধান বৈশিষ্ট্য হলো ZeRO Optimization, Mixed Precision Training, এবং Distributed Training। এই ফিচারগুলোর মাধ্যমে বড় মডেল training এবং inference সহজে এবং দ্রুততর করা যায়।

এখানে DeepSpeed এর বেসিক ফিচারগুলো উদাহরণসহ দেখানো হলো:

1. ZeRO (Zero Redundancy Optimizer) Optimization

ZeRO Optimization বড় মডেল training এর জন্য অন্যতম গুরুত্বপূর্ণ ফিচার, যা optimizer states এবং model parameters কে বিভিন্ন GPU তে ভাগ করে সংরক্ষণ করে memory usage কমায়।

উদাহরণ:

নিচে ZeRO Stage 2 ব্যবহার করে BERT মডেল training এর উদাহরণ দেখানো হলো:

import deepspeed
import torch
from transformers import BertForSequenceClassification, BertTokenizer

# মডেল লোড করা
model = BertForSequenceClassification.from_pretrained("bert-base-uncased")

# DeepSpeed এর ZeRO কনফিগারেশন ফাইল
deepspeed_config = {
    "train_batch_size": 8,
    "fp16": {
        "enabled": True  # Mixed Precision Training
    },
    "zero_optimization": {
        "stage": 2  # ZeRO Stage 2 ব্যবহার করা
    },
    "optimizer": {
        "type": "AdamW",
        "params": {
            "lr": 0.0001
        }
    }
}

# DeepSpeed মডেল ইনিশিয়ালাইজ করা
model_engine, optimizer, _, _ = deepspeed.initialize(
    config=deepspeed_config,
    model=model,
    model_parameters=model.parameters()
)

# Training লুপ (উদাহরণস্বরূপ)
train_dataloader = ...  # DataLoader তৈরি করা আছে ধরে নিচ্ছি
for epoch in range(5):
    for batch in train_dataloader:
        inputs = batch[0].to(model_engine.local_rank)
        labels = batch[1].to(model_engine.local_rank)

        outputs = model_engine(inputs, labels=labels)
        loss = outputs.loss

        model_engine.backward(loss)
        model_engine.step()
    
    print(f"Epoch {epoch + 1} completed")

এই উদাহরণে, ZeRO Stage 2 ব্যবহার করে gradient এবং optimizer states কে ভাগ করে রাখা হয়েছে, যা memory usage কমায় এবং multi-GPU training কে efficient করে।

2. Mixed Precision Training

Mixed Precision Training এ FP16 এবং FP32 precision ব্যবহার করা হয়, যা GPU memory usage কমিয়ে training কে দ্রুততর করে। DeepSpeed এ fp16 কনফিগারেশন ব্যবহার করে এই ফিচারটি enable করা যায়।

উদাহরণ:

নিচে FP16 precision ব্যবহার করে মডেল training দেখানো হলো:

deepspeed_config = {
    "train_batch_size": 16,
    "fp16": {
        "enabled": True  # FP16 Mixed Precision Training
    },
    "optimizer": {
        "type": "AdamW",
        "params": {
            "lr": 0.0001
        }
    }
}

# DeepSpeed ইনিশিয়ালাইজ করা
model_engine, optimizer, _, _ = deepspeed.initialize(
    config=deepspeed_config,
    model=model,
    model_parameters=model.parameters()
)

# FP16 এর মাধ্যমে মেমোরি এবং computation efficiency বৃদ্ধি করা হয়েছে।

এই কনফিগারেশনে, মডেলটি FP16 এবং FP32 precision এর সংমিশ্রণে train হবে, যা memory utilization প্রায় ৫০% পর্যন্ত কমাতে পারে।

3. Distributed Training এবং Data Parallelism

DeepSpeed এর মাধ্যমে multi-GPU বা multi-node setup এ distributed training সহজে করা যায়। একাধিক GPU ব্যবহার করে training এর সময় data parallelism ব্যবহার করা হয়, যা মডেল train করার সময় data কে বিভিন্ন GPU তে ভাগ করে দেয়।

উদাহরণ:

নিচে ৪টি GPU ব্যবহার করে distributed training এর উদাহরণ দেখানো হলো:

# 4 GPU ব্যবহার করে training শুরু করা
deepspeed --num_gpus=4 training_script.py

এখানে --num_gpus=4 flag দিয়ে DeepSpeed কে নির্দেশ দেওয়া হয়েছে ৪টি GPU ব্যবহার করতে, যা মডেলকে data parallelism এর মাধ্যমে train করবে।

4. Gradient Accumulation

Gradient Accumulation একটি Memory Optimization Technique, যা বড় মডেলের জন্য GPU memory usage কমাতে সাহায্য করে। Gradient Accumulation এর মাধ্যমে ছোট batch size ব্যবহার করে accumulated gradient তৈরি করা হয়, যা GPU memory constraint থাকা সত্ত্বেও বড় মডেল train করতে সহায়ক।

উদাহরণ:

নিচে Gradient Accumulation এর উদাহরণ দেখানো হলো:

deepspeed_config = {
    "train_batch_size": 8,
    "gradient_accumulation_steps": 4,  # 4 steps accumulate করা হবে
    "fp16": {
        "enabled": True
    },
    "zero_optimization": {
        "stage": 1
    }
}

# DeepSpeed মডেল ইনিশিয়ালাইজ করা
model_engine, optimizer, _, _ = deepspeed.initialize(
    config=deepspeed_config,
    model=model,
    model_parameters=model.parameters()
)

# Training লুপ (Gradient Accumulation)
for epoch in range(5):
    for step, batch in enumerate(train_dataloader):
        inputs = batch[0].to(model_engine.local_rank)
        labels = batch[1].to(model_engine.local_rank)

        outputs = model_engine(inputs, labels=labels)
        loss = outputs.loss / deepspeed_config["gradient_accumulation_steps"]
        
        model_engine.backward(loss)
        
        # নির্দিষ্ট accumulation steps পর optimizer step নেওয়া
        if (step + 1) % deepspeed_config["gradient_accumulation_steps"] == 0:
            model_engine.step()
            model_engine.zero_grad()

5. Activation Checkpointing

Activation Checkpointing বড় মডেল train করার সময় GPU memory usage কমানোর একটি পদ্ধতি। এটি intermediate activations সংরক্ষণ না করে প্রয়োজন অনুসারে forward pass এ পুনরায় গণনা করে।

উদাহরণ:

DeepSpeed কনফিগারেশনে Activation Checkpointing enable করা:

deepspeed_config = {
    "train_batch_size": 16,
    "fp16": {
        "enabled": True
    },
    "zero_optimization": {
        "stage": 2
    },
    "activation_checkpointing": {
        "partition_activations": True
    }
}

উপসংহার

DeepSpeed এর বেসিক ফিচারগুলোর মাধ্যমে বড় মডেল train করা সহজ এবং memory-efficient করা সম্ভব।

ফিচারউদ্দেশ্য
ZeRO OptimizationMemory usage কমিয়ে multi-GPU তে মডেল train করা সহজ করে।
Mixed Precision TrainingFP16 এবং FP32 ব্যবহার করে computation এবং memory efficiency বৃদ্ধি করে।
Distributed TrainingMulti-GPU বা Multi-node setup এ বড় মডেল train করা সহজ করে।
Gradient Accumulationছোট batch size ব্যবহার করে large batch size এর মত gradient তৈরি করা যায়।
Activation CheckpointingIntermediate activations পুনরায় গণনা করে memory ব্যবহারে দক্ষতা আনা।

DeepSpeed এর এই ফিচারগুলো বড় মডেল training এবং memory optimization এর ক্ষেত্রে অত্যন্ত গুরুত্বপূর্ণ এবং large-scale model deployment এর জন্য বিশেষ উপযোগী।

Content added By
Promotion

Are you sure to start over?

Loading...